﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace MonopolyNOHI
{
    public class Bord
    {
        public List<Veld> velden { get; private set; }

        // maak een lijst van velden aan

        // maak het bord aan met 40 velden
        public Bord()
        {
            velden = new List<Veld>(40);

            try
            {
                velden.Add(new Veld("Start", false));
                velden.Add(new Veld("Dorpsstraat",true));
                velden.Add(new Veld("Algemeen fonds",false));
                velden.Add(new Veld("Brink",true));
                velden.Add(new Veld("Inkomstenbelasting",false));
                velden.Add(new Veld("Station Zuid",true));
                velden.Add(new Veld("Steenstraat, Arnhem",true));
                velden.Add(new Veld("Kans",false));
                velden.Add(new Veld("Ketelstraat, Arnhem",true));
                velden.Add(new Veld("Velperplein, Arnhem",true));
                velden.Add(new Veld("Gevangenis",false));
                velden.Add(new Veld("Barteljorisstraat, Haarlem", true));
                velden.Add(new Veld("Elektriciteitsbedrijf", true));
                velden.Add(new Veld("Zijlweg, Haarlem", true));
                velden.Add(new Veld("Houtstraat Haarlem", true));
                velden.Add(new Veld("Station West", true));
                velden.Add(new Veld("Neude, Utrecht", true));
                velden.Add(new Veld("Algemeen fonds", false));
                velden.Add(new Veld("Biltstraat, Utrecht", true));
                velden.Add(new Veld("Vreeburg, Utrecht", true));
                velden.Add(new Veld("Vrij parkeren", false));
                velden.Add(new Veld("A Kerkhof, Groningen", true));
                velden.Add(new Veld("Kans", false));
                velden.Add(new Veld("Grote Markt, Groningen", true));
                velden.Add(new Veld("Heerestraat, Groningen", true));
                velden.Add(new Veld("Station Noord", true));
                velden.Add(new Veld("Spui, 's-Gravenhage", true));
                velden.Add(new Veld("Plein, 's-Gravenhage", true));
                velden.Add(new Veld("Waterleiding", false));
                velden.Add(new Veld("Lange Poten, 's-Gravenhage", true));
                velden.Add(new Veld("Naar de gevangenis", false));
                velden.Add(new Veld("Hofplein, Rotterdam", true));
                velden.Add(new Veld("Blaak, Rotterdam", true));
                velden.Add(new Veld("Algemeen fonds", false));
                velden.Add(new Veld("Coolsingel, Rotterdam", true));
                velden.Add(new Veld("Station Oost", true));
                velden.Add(new Veld("Kans", false));
                velden.Add(new Veld("Leidsestraat, Amsterdam", true));
                velden.Add(new Veld("Extra belasting", false));
                velden.Add(new Veld("Kalverstraat, Amsterdam", true));
            }
            catch (Exception e)
            {
                Console.WriteLine(e + "Fout bij het aanmaken van spelbord");
            }
        }

        public Veld GeefVeld(int nummer)
        {
            return velden.ElementAt(nummer);
        }

        public int GeefVeldPositie(Veld veld)
        {
            return velden.IndexOf(veld);
            /*List<Veld> templist = this.velden;
            var index = templist.IndexOf(veld);
            return index;*/
        }

        public Veld GeefVolgendeVelden(Veld veld, int aantalvelden)
        {
            int veldnummer = GeefVeldPositie(veld);

            veldnummer += aantalvelden;
            if (veldnummer >= 40)
            {
                veldnummer = veldnummer - 40;
            }
            Console.WriteLine("Nieuwe positie: " + velden.ElementAt(veldnummer).Naam + "(" + veldnummer + ")" + ", dit perceel is te koop: " + GeefVeld(veldnummer).IsTeKoop());
            return GeefVeld(veldnummer);
        }
    }
}